libtorch的安装与简单使用 | 您所在的位置:网站首页 › libtorch tensorwhere › libtorch的安装与简单使用 |
1.背景
2.安装
(1) 查看CUDA版本
(2) 下载文件
(3) 潜在依赖cuDNN
3.测试
(1) CMake写法
(2) 代码调用
(3) 进阶示例
a.模型的训练与保存
b.模型调用
4.参考资料
1.背景
众所周知,现在提到深度学习就离不开PyTorch。但其实PyTorch从更广泛的意义上来说,也只是Torch的Python接口而已。只是大家现在都习惯用Python写代码,所以PyTorch比较火。但是不要忘了Torch其实还有C++的接口,名字叫libtorch。这个名字一看就很有Linux C++库的感觉,libxxx。因为最近在做一些深度学习和SLAM相结合的工作,需要在C++中调用一些神经网络。因此,本篇博客主要介绍Ubuntu下libtorch如何安装以及简单的使用。 2.安装libtorch安装有两种方式,一种是从源码编译,一种是下载已经编译好的文件。如果没有特殊需求的话,这里推荐第二种方式,直接下载库文件。另外libtorch和PyTorch一样,也有CPU和GPU两个版本,下载的时候需要注意一下。 (1) 查看CUDA版本首先,建议先查看一下自己电脑上的CUDA版本,终端中输入nvcc -V即可。例如在我的电脑上CUDA版本是10.1。
在知道CUDA版本以后,就可以根据需求下载对应的libtorch文件了。这里需要注意一下libtorch不同版本之间的API差异可能较大,所以建议提前确定好要下载的版本,不要太奇怪,以防止不兼容。而且新版本的libtorch只支持用C++14标准,而如果你现有项目是C++11标准就会比较麻烦。 下载地址可以在这里查看。比如我选择的是CUDA 10.1对应的libtorch 1.3.0版本。 下载完成后,你会得到一个压缩包。剩下需要做的就是将这个压缩包解压到你想要放的位置,libtorch就“安装”成功了。解压之后的内容如下图所示。
在实际测试中发现,libtorch可能还会需要安装cuDNN。官网是这里。安装的步骤也十分简单粗暴。首先我们在这里下载对应的cuDNN库文件(注意和CUDA的版本对应关系)。下载完成后,你同样会得到一个压缩包,然后进行解压,就可以得到一个叫做cuda的文件夹。然后在当前目录下打开终端,依次输入下面的命令即可完成安装。 cp cuda/include/cudnn.h /usr/local/cuda/include/ cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ chmod a+r /usr/local/cuda/include/cudnn.h chmod a+r /usr/local/cuda/lib64/libcudnn*复制完成之后,这个cuda文件夹就可以删掉了。而如何查看cuDNN版本也非常简单,在终端中输入如下命令即可。 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2如果你安装了,就会正常输出如下内容,本机中的cuDNN是7.6.5。
细心的你可能已经注意到了,这样简单粗暴的安装,CMake是不可能自动找到libtorch库的。所以我们需要在CMake文件中显式地指定libtorch的路径。本机中libtorch的路径为/root/Softwares/libtorch,所以CMake文件应该这样写: cmake_minimum_required(VERSION 3.15) project(libtorchDemo) set(CMAKE_CXX_STANDARD 11) set(Torch_DIR /root/Softwares/libtorch/share/cmake/Torch) find_package(Torch REQUIRED) add_executable(libtorchDemo main.cpp) target_link_libraries(libtorchDemo ${TORCH_LIBRARIES})正常情况下,CMake的输出如下。
在代码中,我们至少需要包含torch/torch.h。一个非常简单的打印GPU是否可用的代码如下。 #include #include // libtorch头文件 using namespace torch; // libtorch命名空间 using namespace std; int main() { // 分别打印CUDA、cuDNN是否可用以及可用的CUDA设备个数 // 可以发现函数名是和PyTorch里一样的 cout |
CopyRight 2018-2019 实验室设备网 版权所有 |